import useDictStore from '@/store/dictStore.ts'
import { API_DICT_DATA } from '@/api/system/dict/data.ts'

import { ref,toRefs } from 'vue'

export interface DictItem {
  label: string;         // 显示文本
  value: string | number; // 实际值
  elTagType?: string;     // 标签类型（Element UI用，可选）
  elTagClass?: string;    // 标签自定义类（Element UI用，可选）
}
/**
 * 获取字典数据,传入例如性别，操作类型
 * 单个参数返回值例如       "sys_normal_disable": [
            {
                "label": "正常",
                "value": "0",
                "elTagType": "primary",
                "elTagClass": null
            },
            {
                "label": "停用",
                "value": "1",
                "elTagType": "danger",
                "elTagClass": null
            }
        ]
 */
//jog-log.vue就调用了多个参数
export function useDict(...args: string[]) {
  // 定义响应式对象，键为字典类型名称，值为字典项数组
  const res = ref<Record<string, DictItem[]>>({});
  return (() => {
    args.forEach((dictType, index) => {
      // 初始化一个空数组,例如Record的键sys_user_sex，值可能为男、女
      res.value[dictType] = []
      // 如果store中存在，则直接赋值
      const dicts = useDictStore().getDict(dictType)
      if (dicts) {
        res.value[dictType] = dicts
      } else {
        API_DICT_DATA.getDicts(dictType).then(resp => {
          res.value[dictType] = resp.data.map(p => ({ label: p.dictLabel, value: p.dictValue, elTagType: p.listClass, elTagClass: p.cssClass }))
          useDictStore().setDict(dictType, res.value[dictType])
        })
      }
    })
    //console.log('字典工具类获取字典数据然后toRefs',...args,toRefs(res.value))
    return toRefs(res.value)
  })()
}